---
image: /generated/articles-docs-timeout.png
id: timeout
title: Debugging timeouts
sidebar_label: Timeouts
crumb: 'Troubleshooting'
---

The following error:

```bash
A delayRender() was called but not cleared after 28000ms. See https://remotion.dev/docs/timeout for help. The delayRender was called
```

generally happens if a [`delayRender()`](/docs/delay-render) handle has been created and not been cleared afterwards. Remotion will wait to make a screenshot, but aborts it by default after 30 seconds to not hang forever.

## Possible causes

### `continueRender()` was not called

Your code might have a problem where you call [`delayRender()`](/docs/delay-render) but never clear it. This will cause Remotion to wait forever before it starts rendering and leads to a timeout message.

**Resolution**: Check your code and make sure you are calling [`continueRender()`](/docs/continue-render).

### No internet connection or firewall issue

If you rely on network assets such as fonts, images, videos or audio and you don't have internet connection or requests get blocked by a firewall. Special attention has to be given to when you are rendering in the cloud, Amazon VPC could for example block outgoing network requests and lead to a timeout.

**Resolution**: Make sure all network resources you require can be accessed.

### Memory pressure

When setting the concurrency too high, Chrome might decide to not load some `<Html5Video />`s which can lead to a timeout error.

We consider this a bug in Remotion and plan to fix it in the future.

**Workaround**: Reduce the `concurrency` to a level where Chrome can load all videos.

### Old version of Remotion

Older versions of Remotion had bugs which could lead to timeout.
Especially 1.x releases could timeout when importing large assets

**Resolution**: Upgrade to the latest Remotion version using `npm run upgrade`.

### Video needs to be downloaded

If you render a video using [`<OffthreadVideo>`](/docs/offthreadvideo), then the video needs to be downloaded before it can be read. [If the video is large and takes longer than the timeout to be downloaded, then the timeout will be triggered](/docs/troubleshooting/delay-render-proxy). In that you should increase the [timeout](#increase-timeout).

### Not helpful?

[Open an issue](https://github.com/remotion-dev/remotion/issues/new) and try to describe your issue in a way that is reproducible for us. We will try to help you out.

## "Loading &lt;Img&gt; with src http://localhost:3000/proxy"

See here for this specific [timeout](/docs/troubleshooting/delay-render-proxy) message.

## Increase timeout<AvailableFrom v="2.6.3"/>

Sometimes, you cannot avoid a frame taking longer than 30 seconds to render. For example:

- Expensive WebGL scenes
- Expensive preprocessing of data
- Need to wait for videos to be downloaded

You can increase the default timeout:

- In the Remotion Studio render dialog under "Advanced"
- Using the [`--timeout`](/docs/cli/render#--timeout) CLI flag
- Using the `timeoutInMilliseconds` option in [`renderStill()`](/docs/renderer/render-still#timeoutinmilliseconds), [`renderFrames()`](/docs/renderer/render-frames#timeoutinmilliseconds), [`getCompositions()`](/docs/renderer/get-compositions#timeoutinmilliseconds), [`renderMedia()`](/docs/renderer/render-media#timeoutinmilliseconds), [`renderMediaOnLambda()`](/docs/lambda/rendermediaonlambda#timeoutinmilliseconds), [`renderStillOnLambda()`](/docs/lambda/renderstillonlambda#timeoutinmilliseconds), [`renderStillOnCloudRun()`](/docs/cloudrun/renderstilloncloudrun#delayrendertimeoutinmilliseconds) and [`renderMediaOnCloudRun()`](/docs/cloudrun/rendermediaoncloudrun#delayrendertimeoutinmilliseconds)
- Using the [`Config.setDelayRenderTimeoutInMilliseconds()`](/docs/config#setdelayrendertimeoutinmilliseconds) option in the config file, if you render on the CLI
- Individually for a [`delayRender()`](/docs/delay-render) call using the [`timeoutInMilliseconds`](/docs/delay-render#modifying-the-timeout) option<AvailableFrom v="4.0.140"/>
- The [`<Img>`](/docs/img#delayrendertimeoutinmilliseconds), [`<Audio>`](/docs/media/audio#delayrendertimeoutinmilliseconds), [`<Video>`](/docs/media/video#delayrendertimeoutinmilliseconds), [`<Html5Audio>`](/docs/html5-audio#delayrendertimeoutinmilliseconds), [`<Html5Video>`](/docs/html5-video#delayrendertimeoutinmilliseconds) and [`<IFrame>`](/docs/iframe#delayrendertimeoutinmilliseconds) tags support a `delayRenderTimeoutInMilliseconds` prop to control the value of `timeoutInMilliseconds` for the `delayRender()` call that those components make<AvailableFrom v="4.0.140"/>

## Adding a label to help debugging<AvailableFrom v="2.6.13"/>

If you encounter a timeout and don't know where it came from, you can add a label as a parameter:

```tsx twoslash
import {delayRender} from 'remotion';

// ---cut---

delayRender('Fetching data from API...');
```

If the call times out, the label will be referenced in the error message:

```
Uncaught Error: A delayRender() "Fetching data from API..." was called but not cleared after 28000ms. See https://remotion.dev/docs/timeout for help. The delayRender was called
```

## See also

- [delayRender()](/docs/delay-render)
- [Data fetching](/docs/data-fetching)
- [Loading Root Component Timeout](/docs/troubleshooting/loading-root-component)
- ["Timed out evaluating page function"](/docs/troubleshooting/timed-out-page-function)
- ["Loading &lt;Img&gt; with src http://localhost:3000/proxy ..."](/docs/troubleshooting/delay-render-proxy)
